#include <muduo/net/TcpClient.h>
#include <iostream>
#include <muduo/net/TcpConnection.h>
#include <muduo/net/EventLoopThread.h>
#include "chatclient.hpp"
#include "clientservice.hpp"

using std::cout;
using std::endl;
using std::cerr;
using std::cin;

int main(int argc,char* argv[]){
    //客户端运行时需要附带 连接服务器ip 和 端口 的
    //如果没有的话（参数小于三个）就会报错
    if(argc<3){
        std::cerr<<"command invalid! example: ./ChatClient 127.0.0.1 6969 "<<endl;
        exit(-1);
    }

    //解析命令行参数argv
    char* ip=argv[1];
    uint16_t port=atoi(argv[2]);

    EventLoopThread loopThread;//IO线程
    InetAddress addr(ip,port);
    //EventLoop loop;
    ChatClient client(loopThread.startLoop(),addr,"ChatClient");
    client.connect();
    //loop.loop();

    
    //上面是IO线程分离，负责连接和监听服务器传过来的消息，
    //下面是我们主线程，负责客户端的逻辑处理，等待用户输入命令等

    //等待IO线程连接成功，从而获取连接对象
    sleep(1);

    
    //进入主线程的逻辑循环中
    ClientService::getInstacnce()->mainloop();

    client.stop();
    cout<<"disconnect"<<endl;
}